/**
 * 
 */
package iut2.sponsor.client;

import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

/**
 * Classe gerant l'affichage de la liste des montants offerts par les sponsors
 */
public class VueMontant extends Vue {
	
	/**
	 * panel contenant la liste des montant
	 */
	private VerticalPanel panel    = new VerticalPanel();
	
	/**
	 * titre affiche en haut de la page
	 */
	private Label titre = new Label();
	
	/**
	 * constructeur remplissant la liste
	 */
	public VueMontant() {
		titre.setText(lang.montTotOffer());
		titre.setStyleName("titre");
		panel.add(titre);
		
		Sponsors spon     = Iut2sponsor.SINGLETON.getSponsors();
		int      montantN = Iut2sponsor.montantNecessaires;

		ProgressBar progress = new ProgressBar("€",80, montantN, ProgressBar.SHOW_REMAINING);
		progress.setProgress(spon.getMontant());

		panel.add(progress);
		panel.add(new HTML("<hr />"));
		
		panel.add(new HTML("<br />" + lang.montDetail() +  " :<br /><br /><ul>"));
		
		
		for (Sponsor sp: spon) {
			if (sp.getMontant() > 0) {
				panel.add(new SponsorDesc(sp));
			}
		}
		
		panel.add(new HTML("</ul><div id=\"separation\"></div>" + lang.total() + " :  <span class=\"montant\"> "+spon.getMontant()+" €</span>"));
	}
	
	/**
	 * Classe definissant l'affichage de la description d'un montant offert par un sponsor
	 */
	private class SponsorDesc extends HorizontalPanel {
		/**
		 * Constructeur
		 * @param sp sponsor dont le montant est a afficher dans la liste
		 */
		public SponsorDesc(Sponsor sp) {
			Grid grid = new Grid(1, 2);
			
			grid.setWidget(0,0, new HTML("<li><span class=\"montant\">" + sp.getMontant() + " €</span></li>"));
			grid.setWidget(0,1, new HTML(lang.offerPar(sp.getName())));
			
			this.add(grid);
		}
	}
	
	/**
	 * @return le panel contenant la liste
	 */
	@Override
	public Widget getPanel() {
		return panel;
	}
	
	/**
	 * @param pxSize taille en pixels
	 * @return la progress bar des montants a afficher dans le menu
	 */
	public static Widget getProgress(int pxSize) {
		Sponsors spon     = Iut2sponsor.SINGLETON.getSponsors();
		int      montantN = Iut2sponsor.montantNecessaires;
		
		ProgressBar pb    = new ProgressBar("€", pxSize, montantN, 0);
		
		pb.setProgress(spon.getMontant());
		return pb;
	}
}
